Cloud computing has become a widely adopted approach for an enterprise to obtain access to large amounts of computing resources. One of the primary technologies underlying cloud computing is virtualization. Virtualization allows a physical computing server to host multiple virtual machine instances, each of which executes as an independent computing system with virtual hardware components, such as a CPU and memory, managed by an operating system. Once launched, an enterprise can run applications on a virtual machine instance in the same manner as applications running on a physical computing system or server used by the enterprise. For example, an enterprise may use cloud computing to provide a retail shopping website backed by virtual machine instances running web-servers, application servers, and database applications. Because additional virtual machine instances can be launched on demand, cloud computing allows an enterprise to obtain computing resources as needed without having to invest and maintain an underlying physical computing infrastructure.
In addition to providing virtual machine instances, a cloud computing provider may offer a variety of other virtual computing resources and computing services to clients. For example, the service provider may offer database services, persistent storage, networking services, load balancing, auto-scaling, messaging, cloud formation, monitoring services etc., as part of a cloud based services offering. Customers typically invoke application programming interfaces (APIs) defined by web services published by the provider to access, instantiate, manage, and control a given virtual computing resource or service. For example, an enterprise customer may invoke API calls exposed by the service provider to launch, configure, access, and manage cloud based computing resources as needed, e.g., by composing applications which invoke API calls or using a service console or command line tool which invokes such API calls. Often, for reasons of scalability, each service offered by the cloud provider is accessed using an independent API (or distinct console application) that exposes a basic set of functions associated with the corresponding service.
An enterprise can then build more complex operations using the basic set of services exposed by the APIs. However, in order for an enterprise to obtain higher-level logical views of their cloud based computing resources, they need to program logic in their applications directly. Doing so typically requires the enterprise to develop applications which invoke multiple APIs of different services, filter result sets on the client side, and merge the data together in the form the customer wants.